package cn.edu.swu.miniwebsvr.core;

import cn.edu.swu.miniwebsvr.handler.DefaultHandler;
import cn.edu.swu.miniwebsvr.handler.EchoHandler;
import cn.edu.swu.miniwebsvr.handler.TimeHandler;
import java.util.HashMap;
import java.util.Map;


public class Config {
    // 服务器监听端口号，默认为8080
    private final int port = 8080;
    // Web根目录，默认为"webroot"
    private final String webRoot = "webroot";
    // URL路径与处理器的映射表
    private final Map<String, Handler> handlerMap = new HashMap<>();

    private Config() {
        // 注册默认处理器，处理根路径"/"
        handlerMap.put("/", new DefaultHandler());
        // 注册时间处理器，处理"/time"路径
        handlerMap.put("/time", new TimeHandler());
        // 注册回显处理器，处理"/echo"路径
        handlerMap.put("/echo", new EchoHandler());
    }
    // 获取Config单例实例的静态方法
    public static Config getInstance() {
        return Holder.INSTANCE;
    }
    // 静态内部类Holder，用于实现单例模式（线程安全）
    private static class Holder {
        private static final Config INSTANCE = new Config();
    }
    // 获取服务器端口号
    public int getPort() {
        return port;
    }

    // 获取Web根目录路径
    public String getWebRoot() {
        return webRoot;
    }
    // 根据URL获取对应的处理器
    public Handler getHandler(String url) {
        // TODO: [222024321072052/然娜·吐尔逊汗] 实现 URL 精确匹配或基础路径匹配逻辑
        if (url == null || url.isEmpty()) {
            return null;
        }
        // 1. 先尝试精确匹配（如/echo → EchoHandler）
        if (handlerMap.containsKey(url)) {
            return handlerMap.get(url);
        }
        return null;
    }
}

